package com.tanhua.dubbo.api;

import com.tanhua.domain.mongo.UserLike;
import com.tanhua.domain.mongo.UserLikeCount;
import com.tanhua.domain.vo.PageResult;

import java.util.List;

public interface UserLikeApi {
    /**
     * 统计用户的互相喜欢、喜欢、粉丝数量
     */
    UserLikeCount findUserLikeCounts(Long userId);

    /**
     * 互相喜欢、喜欢、粉丝、谁看过我 - 翻页列表
     * @param type 1 互相喜欢、 2喜欢、 3 粉丝、 4 谁看过我
     * @return List<CommonLikeUser>
     */
    PageResult findUserLikeList(Integer page, Integer pagesize, Integer type, Long userId);

    /**
     * 将粉丝关系删除
     * @param userId    当前用户id
     * @param targetUserId  粉丝id
     */
    void removeFan(Long userId, Long targetUserId);

    /**
     * 取消喜欢
     * @param userId 当前用户id
     * @param targetUserId 目标用户id
     * @param type 1表示好友关系 2表示userId 喜欢 targetUserId 但不是好友关系...
     */
    void removeContact(Long userId, Long targetUserId, Integer type);

    /**
     * 给当前用户和卡牌用户添加喜欢关系
     *
     * @param userId
     * @param cardUserId
     */
    void loveCard(Long userId, Long cardUserId);

    /**
     * 获取当前用户的粉丝的id数组
     *
     * @param userId
     * @return
     */
    List<Long> getFanIds(Long userId);

    /**
     * 获取当前用户单向喜欢的用户id集合
     *
     * @param userId
     * @return
     */
    List<Long> getLikeIds(Long userId);

    /**
     * 右滑喜欢
     * @param id
     * @param userId
     * @return
     */
    UserLike findId(Long id, Long userId);

    void insrt(UserLike userLike);

    void remove(Long id, Long userId);

    UserLike quer(Long id, Long userId);

    void removeId(Long id, Long userId);

}
